package com.ruoyi.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.domain.AssociationClapCulvert;
import com.ruoyi.system.domain.CompanyInfo;
import com.ruoyi.system.domain.TAssociationClapDetail;
import com.ruoyi.system.domain.vo.coopHan.*;
import com.ruoyi.system.domain.vo.handleRecord.HandleRecordVo;
import com.ruoyi.system.dto.coopHan.*;
import com.ruoyi.system.dto.handleRecord.HandleRecordDto;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.rmi.ServerException;
import java.util.List;

/**
 * <p>
 * 协拍涵表 服务类
 * </p>
 *
 * @author yanfu
 * @since 2024-03-01
 */
public interface IAssociationClapCulvertService extends IService<AssociationClapCulvert> {

    Long saveCulvert(CulvertDto dto);

    String saveAndCommit(CulvertDto dto) throws Exception;

    void delCulvert(Long id) throws ServerException;

    void putCulvert(CulvertDto dto) throws Exception;

    Page<PageCulvertVo> pageCulvert(PageCulvertDto dto);

    List<TAssociationClapDetail> feedbackCulvert(Long id);

    void harmonizeCulvert(List<Long> ids) throws ServerException;

    List<HandleRecordVo> handleRecord(HandleRecordDto dto);

    CulvertDetailVo detailCulvert(Long id) throws ServerException;

    Page<PageCulvertApprovalVo> getApprovalPage(PageCulvertDto dto);

    CulvertApprovalDetailVo getApprovalDetail(Long id);

    Page<PageCulvertNoticeVo> pagePublicityCulvert(PageCulvertNoticeDto dto);

    CulvertNoticeDetailVo noticeDetail(Long id);

    List<CulvertExcelVo> importCert(MultipartFile file, HttpServletRequest request) throws Exception;

    List<CulvertApprovalDetailExportVo> export(CulvertHarmonizeDto dto);

    /**
     * 协拍涵办理申请【受理】列表
     * @param dto
     * @return
     */
    Page<PageCulvertApprovalVo> getAcceptancePage(PageCulvertDto dto);

    /**
     * 协拍涵办理申请【审查决定】列表
     * @param dto
     * @return
     */
    Page<PageCulvertApprovalVo> getReviewDecisionPage(PageCulvertDto dto);

    /**
     * 协拍涵办理申请【盖章发函】列表
     * @param dto
     * @return
     */
    Page<PageCulvertApprovalVo> getStampSendLetterPage(PageCulvertDto dto);

    CompanyInfo getCompanyDesc(String id);
}
